#ifndef MYCHESS_GRAPHICS_HEADER
#define MYCHESS_GRAPHICS_HEADER

#include <ncursesw/ncurses.h>   //编译的时候使用gcc *.c -lncursesw
#include <locale.h>
#include <fcntl.h>
#include "unistd.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
typedef enum{GCBlack,GCRed,GCGreen,GCYellow,GCBlue,GCMagenta,GCCyan,GCWhite,GCCount}GRAPHICS_COLOR;

typedef struct point
{
	int x;
	int y;
	struct point* next;		   //用来制作栈
}POINT;

#define C_ATTR(a,f,b) 	((a)|COLOR_PAIR((f)*GCCount+(b)+1))
#define CURRENT_ATTRIBUTE C_ATTR(g_style,g_fore_color,g_back_color)


#define WIDTH		4
#define LENGTH  	2
#define X_START  	7
#define X_END		35
#define Y_START	    10
#define Y_END		66
#define KEYUP    	0x30ff
#define KEYDOWN 	0x31ff
#define KEYLEFT 	0x32ff
#define KEYRIGHT 	0x33ff
#define ESC		27
#define SPACE		32
#define CHESS "● "//使用┏ ┗ ┓ ┛ ┳ ┻ ┣ ┫ ╋ ━ ┃画棋盘，也可以自己找另外的符号

/******************************************************************************/

bool init_graphics(void);		         	//初始化屏幕函数
void exit_graphics(void);		        	//退出函数
void clear_screen(int x,int y,int w,int h);	//清屏函数
int readkey(void);			            	//键盘读取函数，返回输入的键值 
void menu();				            	//菜单
void manAndMan();			            	//人人对战
void manAndComputer();			        	//人机对战
void computerStep(POINT* );		        	//机器算法
void drawChessboard();			        	//画出棋盘
void drawCursor(POINT );		        	//画出光标
void addChess(POINT ,POINT* );		     	//增加棋子(下棋)
void delChess(POINT*);			        	//减少棋子(悔棋)
void drawChess(POINT* );		        	//画出棋子
bool judgeVictor(POINT* );		        	//判断胜利
void ChessDisplay();			        	//棋盘重现
void GOON();				            	//继续游戏
void GOON_mm();					            //继续游戏
void dsphelp();                             //求助功能
void dsphead();
#endif